export function isvalidUsername(str) {
  const valid_map =  /^[-_a-zA-Z0-9]{2,16}$/
  return valid_map.test(str.trim())
}

/* 合法uri*/
export function validateURL(textval) {
  const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  return urlregex.test(textval)
}

/* 小写字母*/
export function validateLowerCase(str) {
  const reg = /^[a-z]+$/
  return reg.test(str)
}

/* 大写字母*/
export function validateUpperCase(str) {
  const reg = /^[A-Z]+$/
  return reg.test(str)
}

/* 大小写字母*/
export function validatAlphabets(str) {
  const reg = /^[A-Za-z]+$/
  return reg.test(str)
}

/* 是否手机号码或者固话*/
export function validatePhoneTwo(rule, value, callback) {
  const reg = /^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/;;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if ((!reg.test(value)) && value != '') {
      callback(new Error('请输入正确的电话号码'));
    } else {
      callback();
    }
  }
}
/* 是否IMEI*/
export function validateIMEI(rule, value, callback) {
  const reg = /^(\d{15}|\d{17})$/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if ((!reg.test(value)) && value != '') {
      callback(new Error('请输入正确的IMEI码'));
    } else {
      callback();
    }
  }
}

/* 是否邮箱*/
export function validateEMail(rule, value,callback) {
  const reg =/^([a-zA-Z0-9]+[-_\.]?)+@[a-zA-Z0-9]+\.[a-z]+$/;
  if(value==''||value==undefined||value==null){
    callback();
  }else{
    if (!reg.test(value)){
      callback(new Error('请输入正确的邮箱地址'));
    } else {
      callback();
    }
  }
}

// 符合密码要求
export function validatepd(rule, value,callback) {
  const reg = /^[a-zA-Z0-9]{6,15}$/;
  if(value==''||value==undefined||value==null){
    callback();
  }else{
    if (!reg.test(value)){
      callback(new Error('密码由6-15位数字或字母组成'));
    } else {
      callback();
    }
  }
}
export function validatePassword(rule, value,callback) {
  //const reg = /(?!^(\d+|[a-zA-Z]+|[~!@#$%^&*?]+)$)^[\w~!@#$%^&*?]{8,20}$/
  //const reg = /^(?![A-Za-z]+$)(?!\\d+$)(?![\\W_]+$)\\S{8,16}$/;
  //const reg = /(?!^(\d+|[a-zA-Z]+|[~!@#$%^&*?]+)$)^[\w~!@#$%^&*?]{8,20}$/
  //const reg = /((^(?=.*[a-z])(?=.*[A-Z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[A-Z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[a-z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[\da-zA-Z\W]{8,16}$))/
  
  //测试数字 大写字符 小写字符 标点符号 至少三个 测试成功
  const reg = /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_]+$)(?![a-z0-9]+$)(?![a-z\W_]+$)(?![0-9\W_]+$)[a-zA-Z0-9\W_]{8,20}$/;

  if(value==''||value==undefined||value==null){
    callback();
  }else{
    if (!reg.test(value)){
      callback(new Error('密码至少包括大写字母、小写字母、数字、标点符号其中三项,共计8-20位编码组成'));
    } else {
      callback();
    }
  }
}


// 是否为推荐码
export function validateReferral(rule, value, callback) {
  const reg = /^\d+$/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if ((!reg.test(value)) && value != '') {
      callback(new Error('推荐码只能为数字'));
    } else {
      callback();
    }
  }
}


// 公司税号
export function validateTaxcode(rule,value,callback){
  const reg = /^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/;
  if(value == '' || value == undefined || value == null){
    callback()
  }else{
    if ((!reg.test(value)) && value != '') {
      callback(new Error('企业税号由15/17/18/20位大写字母或数字组成'));
    } else {
      callback();
    }
  }
}

// 高速
export function validateHighSpeed(rule,value,callback){
  const reg = /^\d+$|^\d+[.]?\d+$/;
  if(value == '' || value == undefined || value == null){
    callback()
  }else{
    if((!reg.test(value)) && value != ''){
      callback(new Error('只能设置数字'))
    }else{
      if((value > 255 || value < 100) && value != ''){
        callback(new Error('只能设置数字且范围为100-255'));
      }else{
        callback();
      }
    }
  }
}


// 用户的验证
// 姓只能为英文 [A-Z]{1}[A-Z0-9-]{1,}
export function validateXing(rule, value,callback) {
  const reg = /^[A-Za-z]+$/;
  if(value==''||value==undefined||value==null){
    callback();
  }else{
    if (!reg.test(value)){
      callback(new Error('只能为英文'));
    } else {
      callback();
    }
  }
}

// 月份
export function validateMonth(rule, value,callback) {
  // const reg = /^0?[0-9]$|^1[0-2]$/;
  const reg = /^\d+$/
  if(value==''||value==undefined||value==null){
    callback();
  }else{
    if (!reg.test(value)){
      callback(new Error('只能为数字'));
    } else {
      callback();
    }
  }
}
// 日期
export function validateDay(rule, value,callback) {
  const reg = /^\d+$/;
  if(value==''||value==undefined||value==null){
    callback();
  }else{
    if (!reg.test(value)){
      callback(new Error('只能为数字'));
    } else {
      callback();
    }
  }
}

// 身份证号码
// "^[A-Z]{1,2}[0-9]{6}\\(?[0-9A]\\)?$"


